package agenda;

/**
 * Clase que define e implementa una agenda de contactos.
 * 
 * @author Paco Cueto & Juan Carlos Bustamante
 * @version 1.0
 * 
 */
public class Agenda {

    private static final int MAXENTRADAS = 100;
    private static Entrada grupoPersonas[];
    private int nInstancias;

    public Agenda() {
	super();
	grupoPersonas = new Entrada[MAXENTRADAS];
	nInstancias = 0;
    }

    protected void crearEntrada(Entrada entrada) {
	grupoPersonas[nInstancias] = entrada;
	nInstancias++;
    }

    public void crearPersona(String nombre, String apellido, String telefono) {
	crearEntrada(new Persona(nombre, apellido, telefono));
    }

    public void crearEmpresa(String nombre, String telefono) {
	crearEntrada(new Empresa(nombre, telefono));
    }

    public int getNInstancias() {
	return nInstancias;
    }

    public String listaEntrada(int pos) {
	if (grupoPersonas[pos] != null) {
	    return grupoPersonas[pos].toString();
	} else {
	    return "";
	}
    }

    public Entrada traeEntrada(int pos) {
	if (grupoPersonas[pos] != null) {
	    return grupoPersonas[pos];
	} else {
	    return new Persona("No encontrado", "", "");
	}
    }

    public String buscarNombreEntrada(String nombre) {
	boolean bEncontrado = false;
	int i;
	for (i = 0; i < nInstancias; i++) {
	    if (grupoPersonas[i].getNombre().equalsIgnoreCase(nombre)) {
		bEncontrado = true;
		break;
	    }
	}
	if (bEncontrado) {
	    return grupoPersonas[i].toString();
	} else {
	    return new Persona("No encontrado", "", "").getNombre();
	}
    }

    public String generarXML() {
	GeneradorXML genXML = new GeneradorXML(this);
	return genXML.generaXML();
    }
}
